import CryptoJS from 'crypto-js'

const AES_SECRET = import.meta.env.VITE_AES_SECRET

/**
 * 使用CryptoJS库计算给定字符串的MD5哈希值
 *
 * @param str 要计算MD5哈希值的字符串
 * @returns 返回给定字符串的MD5哈希值，作为字符串返回
 */
export function md5(str) {
  return CryptoJS.MD5(str).toString()
}

/**
 * 使用AES算法加密字符串
 *
 * @param str 要加密的字符串
 * @param secret 加密密钥，默认为空字符串。如果为空，则使用全局AES密钥 AES_SECRET
 * @returns 加密后的字符串
 */
export function aes_encrypt(str, secret = '') {
  if (!secret) {
    secret = AES_SECRET
  }
  return CryptoJS.AES.encrypt(str, secret).toString()
}

/**
 * 使用AES算法解密字符串
 *
 * @param str 要解密的字符串
 * @param secret 解密密钥，默认为空字符串。如果未提供密钥，将使用默认密钥 AES_SECRET
 * @returns 解密后的字符串
 */
export function aes_decrypt(str, secret = '') {
  if (!secret) {
    secret = AES_SECRET
  }
  return CryptoJS.AES.decrypt(str, secret).toString(CryptoJS.enc.Utf8)
}
